package com.york.tinyrpc.protoss.fault.tolerant;

import com.york.tinyrpc.protoss.spi.SpiLoader;

/**
 * 使用SPI机制加载容错策略
 */
public class TolerantStrategyFactory {

    /**
     * 静态代码块赋值
     */
    static {
        SpiLoader.load(TolerantStrategy.class);
    }

    /**
     * 提供默认的重试策略是固定时间间隔
     */
    private static final TolerantStrategy DEFAULT_TOLERANT_STRATEGY = new FailFastTolerantStrategy();

    /**
     * 获取指定重试策略
     */
    public static TolerantStrategy getTolerantStrategyByType(String tolerantStrategyType) {
        return SpiLoader.getInstance(TolerantStrategy.class, tolerantStrategyType);
    }
}
